main() {
  // 创建对象
  Person p1 = new Person(name: '张三');
  // 调用方法
  p1.sing();
  p1.dance();
  p1.rap();
  p1.basketball();
  p1.code();
  p1.fixBug();
  print(p1.name);
  print(p1.age);

  // 子类调用
  Student s1 = new Student(name: 'abc', age: 18);
  s1.sing();
  s1.dance();
  s1.rap();
  s1.basketball();
}

// 定义一个类，混入skill，coder
class Person with Skill, Coder {
  // 姓名
  String? name;
  // 年龄
  int? age;
  // 构造函数
  Person({this.name, this.age});
}

// 定义子类
class Student extends Person with Skill {
  // 构造函数
  Student({super.name, super.age});
}


// 定义混入 mixin
mixin Skill {
  // 唱歌
  void sing() {
    print('我会唱歌');
  }
  // 跳舞
  void dance() {
    print('我会跳舞');
  }
  // rap
  void rap() {
    print('我会rap');
  }
  // 篮球
  void basketball() {
    print('我会篮球');
  }
}

// 定义混入
mixin Coder {
  // 写代码
  void code() {
    print('我会写代码');
  }
  // 改bug
  void fixBug() {
    print('我会改bug');
  }
}

